home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / X11 / extensions / Printstr.h < prev    next >
C/C++ Source or Header  |  2006-04-12  |  24KB  |  784 lines

  1. /* $Xorg: Printstr.h,v 1.3 2000/08/18 04:05:44 coskrey Exp $ */
  2. /******************************************************************************
  3.  ******************************************************************************
  4.  **
  5.  ** File:         Printstr.h
  6.  **
  7.  ** Description: Definitions needed by the server and library, but
  8.  **              not clients.
  9.  **
  10.  **              Print.h for server, library and clients.
  11.  **
  12.  ******************************************************************************
  13.  **
  14.  ** (c) Copyright 1996 Hewlett-Packard Company
  15.  ** (c) Copyright 1996 International Business Machines Corp.
  16.  ** (c) Copyright 1996 Sun Microsystems, Inc.
  17.  ** (c) Copyright 1996 Novell, Inc.
  18.  ** (c) Copyright 1996 Digital Equipment Corp.
  19.  ** (c) Copyright 1996 Fujitsu Limited
  20.  ** (c) Copyright 1996 Hitachi, Ltd.
  21.  ** 
  22.  ** Permission is hereby granted, free of charge, to any person obtaining a copy
  23.  ** of this software and associated documentation files (the "Software"), to deal
  24.  ** in the Software without restriction, including without limitation the rights
  25.  ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  26.  ** copies of the Software, and to permit persons to whom the Software is
  27.  ** furnished to do so, subject to the following conditions:
  28.  **
  29.  ** The above copyright notice and this permission notice shall be included in
  30.  ** all copies or substantial portions of the Software.
  31.  **
  32.  ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  33.  ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  34.  ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
  35.  ** COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  36.  ** IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  37.  ** CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  38.  **
  39.  ** Except as contained in this notice, the names of the copyright holders shall
  40.  ** not be used in advertising or otherwise to promote the sale, use or other
  41.  ** dealings in this Software without prior written authorization from said
  42.  ** copyright holders.
  43.  **
  44.  ******************************************************************************
  45.  *****************************************************************************/
  46. /* $XFree86: xc/include/extensions/Printstr.h,v 1.5 2001/08/01 00:44:35 tsi Exp $ */
  47.  
  48.  
  49. #ifndef _XpPrintstr_H_
  50. #define _XpPrintstr_H_
  51.  
  52. /*
  53.  * NEED_EVENTS and NEED_REPLIES are hacks to limit the linker symbol-table
  54.  * size.   When function prototypes are needed from Print.h, this sets up
  55.  * a cascading dependency on Printstr.h and eventually Xproto.h to provide
  56.  * the event and reply struct definitions.
  57.  */
  58. #ifndef NEED_EVENTS
  59. #define NEED_EVENTS
  60. #endif /* NEED_EVENTS */
  61.  
  62. #define NEED_REPLIES
  63.  
  64. #include <X11/Xproto.h>
  65. #ifndef _XP_PRINT_SERVER_
  66. #include <X11/Xlib.h>
  67. #endif /* _XP_PRINT_SERVER_ */
  68.  
  69. /*
  70.  * Pull in other definitions.  Print.h will hide some things if we're
  71.  * doing server side work.
  72.  */
  73. #include <X11/extensions/Print.h>
  74.  
  75. #include <X11/Xfuncproto.h>
  76.  
  77. _XFUNCPROTOBEGIN
  78.  
  79. /******************************************************************************
  80.  *
  81.  * Protocol requests constants and alignment values
  82.  *
  83.  * Note: Xlib macro's expect X_ABC where ABC is the name of the
  84.  * protocol request.
  85.  */
  86. #define X_PrintQueryVersion        0
  87. #define X_PrintGetPrinterList        1
  88. #define X_PrintCreateContext        2
  89. #define X_PrintSetContext        3
  90. #define X_PrintGetContext        4
  91. #define X_PrintDestroyContext        5
  92. #define X_PrintGetContextScreen        6
  93. #define X_PrintStartJob            7
  94. #define X_PrintEndJob            8
  95. #define X_PrintStartDoc            9
  96. #define X_PrintEndDoc            10
  97. #define X_PrintPutDocumentData        11
  98. #define X_PrintGetDocumentData        12
  99. #define X_PrintStartPage        13
  100. #define X_PrintEndPage            14
  101. #define X_PrintSelectInput        15
  102. #define X_PrintInputSelected        16
  103. #define X_PrintGetAttributes        17
  104. #define X_PrintSetAttributes        18
  105. #define X_PrintGetOneAttribute        19
  106. #define X_PrintRehashPrinterList    20
  107. #define X_PrintGetPageDimensions    21
  108. #define X_PrintQueryScreens        22
  109. #define X_PrintSetImageResolution    23
  110. #define X_PrintGetImageResolution    24
  111.  
  112. /********************************************************************
  113.  *
  114.  * Protocol data types
  115.  */
  116. #define PCONTEXT CARD32
  117. #define WINDOW   CARD32
  118. #define DRAWABLE CARD32
  119. #define BITMASK  CARD32
  120.  
  121. /******************************************************************************
  122.  *
  123.  * Event wire struct definitions
  124.  *
  125.  * Note: Xlib macro's expect xABC struct names and sz_xABC size
  126.  * constants where ABC is the name of the protocol request.
  127.  */
  128.  
  129.  
  130. /*********************************************************************
  131.  *
  132.  * Events.
  133.  *
  134.  * See Print.h for the protocol "type" values.
  135.  */
  136. typedef struct _xPrintPrintEvent {
  137.     BYTE type;        /* XPPrintNotify + extEntry->eventBase */
  138.     BYTE detail;        /* XPStartJobNotify, XPEndJobNotify,
  139.                    XPStartDocNotify, XPEndDocNotify,
  140.                    XPStartPageNotify, XPEndPageNotify */
  141.     CARD16 sequenceNumber B16;
  142.     PCONTEXT printContext B32; /* print context */
  143.     BOOL   cancel;        /* canceled flag */
  144.     CARD8  pad1;        /* rest is unused */
  145.     CARD16 pad2 B16;
  146.     CARD32 pad3 B32;
  147.     CARD32 pad4 B32;
  148.     CARD32 pad5 B32;
  149.     CARD32 pad6 B32;
  150.     CARD32 pad7 B32;
  151. } xPrintPrintEvent;
  152. #define sz_xPrintPrintEvent 32;
  153.  
  154. typedef struct _xPrintAttributeEvent {
  155.     BYTE   type;        /* XPAttributeNotify + extEntry->eventBase */
  156.     BYTE   detail;        /* XPJobAttr, XPDocAttr, XPPageAttr,
  157.                    XPPrinterAttr, XPSpoolerAttr,
  158.                    XPMediumAttr, XPServerAttr */
  159.     CARD16 sequenceNumber B16;
  160.     PCONTEXT printContext B32; /* print context */
  161.     CARD32 pad1 B32;
  162.     CARD32 pad2 B32;
  163.     CARD32 pad3 B32;
  164.     CARD32 pad4 B32;
  165.     CARD32 pad5 B32;
  166.     CARD32 pad6 B32;
  167. } xPrintAttributeEvent;
  168. #define sz_xPrintAttributeEvent 32;
  169.  
  170.  
  171. /*********************************************************************
  172.  *
  173.  * Requests
  174.  */
  175. typedef struct _PrintQueryVersion {
  176.     CARD8    reqType;        /* always PrintReqCode */
  177.     CARD8    printReqType;        /* always X_PrintQueryVersion */
  178.     CARD16    length B16;
  179. } xPrintQueryVersionReq;
  180. #define sz_xPrintQueryVersionReq    4
  181.  
  182. typedef struct {
  183.     BYTE    type;            /* X_Reply */
  184.     CARD8    unused;            /* not used */
  185.     CARD16    sequenceNumber B16;
  186.     CARD32    length B32;
  187.     CARD16    majorVersion B16;    /* major version of Xp protocol */
  188.     CARD16    minorVersion B16;    /* minor version of Xp protocol */
  189.     CARD32    pad1 B32;
  190.     CARD32    pad2 B32;
  191.     CARD32    pad3 B32;
  192.     CARD32    pad4 B32;
  193.     CARD32    pad5 B32;
  194. } xPrintQueryVersionReply;
  195. #define sz_xPrintQueryVersionReply    32
  196.  
  197.  
  198. typedef struct _PrintGetPrinterList {
  199.     CARD8    reqType;        /* always PrintReqCode */
  200.     CARD8    printReqType;        /* always X_PrintGetPrinterList */
  201.     CARD16    length B16;
  202.     CARD32    printerNameLen B32;    /* length of printer name */
  203.     CARD32    localeLen B32;        /* length of locale string */
  204.  
  205.     /* variable portion *****************************************
  206.     STRING8    printerName;         * printer name *
  207.     BYTE    pad(printerNameLen)     * unused *
  208.     STRING8    locale;             * locale *
  209.     BYTE    pad(localeLen)         * unused *
  210.     ************************************************************/
  211. } xPrintGetPrinterListReq;
  212. #define sz_xPrintGetPrinterListReq    12
  213.  
  214. typedef struct {
  215.     BYTE    type;            /* X_Reply */
  216.     CARD8    unused;            /* not used */
  217.     CARD16    sequenceNumber B16;
  218.     CARD32    length B32;
  219.     CARD32    listCount B32;        /* of PRINTER recs below */
  220.     CARD32    pad1 B32;
  221.     CARD32    pad2 B32;
  222.     CARD32    pad3 B32;
  223.     CARD32    pad4 B32;
  224.     CARD32    pad5 B32;
  225.  
  226.     /* variable portion *****************************************
  227.     CARD32    nameLen B32;        * length of name in bytes *
  228.     STRING8    name;            * name *
  229.     BYTE    pad(nameLen)        * unused *
  230.  
  231.     CARD32    descLen B32;        * length of desc in bytes *
  232.     STRING8    desc;            * localized description *
  233.     BYTE    pad(descLen)        * unused *
  234.     ************************************************************/
  235. } xPrintGetPrinterListReply;
  236. #define sz_xPrintGetPrinterListReply    32
  237.  
  238.  
  239. typedef struct _PrintRehashPrinterList {
  240.     CARD8    reqType;        /* always PrintReqCode */
  241.     CARD8    printReqType;        /* always X_PrintRehashPrinterList */
  242.     CARD16    length B16;
  243. } xPrintRehashPrinterListReq;
  244. #define sz_xPrintRehashPrinterListReq    4
  245.  
  246.  
  247. typedef struct _PrintCreateContext {
  248.     CARD8    reqType;        /* always PrintReqCode */
  249.     CARD8    printReqType;        /* always X_PrintInitSetContext */
  250.     CARD16    length B16;
  251.     CARD32    contextID B32;        /* ID for context */
  252.     CARD32    printerNameLen B32;    /* length of printerName in bytes */
  253.     CARD32    localeLen B32;        /* length of locale in bytes */
  254.  
  255.     /* variable portion *****************************************
  256.     STRING8    printerName         * printer name *
  257.     BYTE    pad(printerNameLen)     * unused *
  258.     STRING8    locale             * locale *
  259.     BYTE    pad(locale)         * unused *
  260.     ************************************************************/
  261. } xPrintCreateContextReq;        
  262. #define sz_xPrintCreateContextReq    16
  263.  
  264.  
  265. typedef struct _PrintSetContext {
  266.     CARD8    reqType;        /* always PrintReqCode */
  267.     CARD8    printReqType;        /* always X_PrintSetContext */
  268.     CARD16    length B16;
  269.     PCONTEXT printContext B32;    /* print context */
  270. } xPrintSetContextReq;        
  271. #define sz_xPrintSetContextReq        8
  272.  
  273.  
  274. typedef struct _PrintGetContext {
  275.     CARD8    reqType;        /* always PrintReqCode */
  276.     CARD8    printReqType;        /* always X_PrintGetContext */
  277.     CARD16    length B16;
  278. } xPrintGetContextReq;        
  279. #define sz_xPrintGetContextReq        4
  280.  
  281. typedef struct {
  282.     BYTE    type;            /* X_Reply */
  283.     CARD8    unused;            /* not used */
  284.     CARD16    sequenceNumber B16;
  285.     CARD32    length B32;
  286.     PCONTEXT printContext B32;    /* print context */
  287.     CARD32    pad1 B32;
  288.     CARD32    pad2 B32;
  289.     CARD32    pad3 B32;
  290.     CARD32    pad4 B32;
  291.     CARD32    pad5 B32;
  292. } xPrintGetContextReply;
  293. #define sz_xPrintGetContextReply    32
  294.  
  295.  
  296. typedef struct _PrintDestroyContext {
  297.     CARD8    reqType;        /* always PrintReqCode */
  298.     CARD8    printReqType;        /* always X_PrintDestroyContext */
  299.     CARD16    length B16;
  300.     PCONTEXT printContext B32;    /* print context */
  301. } xPrintDestroyContextReq;        
  302. #define sz_xPrintDestroyContextReq    8
  303.  
  304.  
  305. typedef struct _PrintGetContextScreen {
  306.     CARD8    reqType;        /* always PrintReqCode */
  307.     CARD8    printReqType;        /* always X_PrintGetContextScreen */
  308.     CARD16    length B16;
  309.     PCONTEXT printContext B32;    /* print context */
  310. } xPrintGetContextScreenReq;        
  311. #define sz_xPrintGetContextScreenReq    8
  312.  
  313. typedef struct {
  314.     BYTE    type;            /* X_Reply */
  315.     CARD8    unused;            /* not used */
  316.     CARD16    sequenceNumber B16;
  317.     CARD32    length B32;
  318.     WINDOW  rootWindow;        /* screenPtr represented as rootWin */
  319.     CARD32    pad1 B32;
  320.     CARD32    pad2 B32;
  321.     CARD32    pad3 B32;
  322.     CARD32    pad4 B32;
  323.     CARD32    pad5 B32;
  324. } xPrintGetContextScreenReply;
  325. #define sz_xPrintGetContextScreenReply    32
  326.  
  327.  
  328. typedef struct _PrintStartJob {
  329.     CARD8    reqType;        /* always PrintReqCode */
  330.     CARD8    printReqType;        /* always X_PrintStartJob */
  331.     CARD16    length B16;
  332.     CARD8    saveData;        /* save data boolean */
  333.     CARD8    pad1;
  334.     CARD16    pad2 B16;
  335. } xPrintStartJobReq;        
  336. #define sz_xPrintStartJobReq        8
  337.  
  338. typedef struct _PrintEndJob {
  339.     CARD8    reqType;        /* always PrintReqCode */
  340.     CARD8    printReqType;        /* always X_PrintEndJob */
  341.     CARD16    length B16;
  342.     BOOL    cancel;            /* cancel boolean */
  343.     CARD8    pad1;
  344.     CARD16    pad2 B16;
  345. } xPrintEndJobReq;
  346. #define sz_xPrintEndJobReq        8
  347.  
  348.  
  349. typedef struct _PrintStartDoc {
  350.     CARD8    reqType;        /* always PrintReqCode */
  351.     CARD8    printReqType;        /* always X_PrintStartDoc */
  352.     CARD16    length B16;
  353.     CARD8    type;            /* type for document */
  354.     CARD8    pad1;
  355.     CARD16    pad2 B16;
  356. } xPrintStartDocReq;        
  357. #define sz_xPrintStartDocReq        8
  358.  
  359. typedef struct _PrintEndDoc {
  360.     CARD8    reqType;        /* always PrintReqCode */
  361.     CARD8    printReqType;        /* always X_PrintEndDoc */
  362.     CARD16    length B16;
  363.     BOOL    cancel;            /* cancel boolean */
  364.     CARD8    pad1;
  365.     CARD16    pad2 B16;
  366. } xPrintEndDocReq;
  367. #define sz_xPrintEndDocReq        8
  368.  
  369.  
  370. typedef struct _PrintPutDocumentData {
  371.     CARD8    reqType;        /* always PrintReqCode */
  372.     CARD8    printReqType;        /* always X_PrintPutDocumentData */
  373.     CARD16    length B16;
  374.     DRAWABLE drawable B32;        /* target drawable */
  375.     CARD32    len_data B32;        /* big len in bytes */
  376.     CARD16    len_fmt;        /* len in bytes */
  377.     CARD16    len_options;        /* len in bytes */
  378.  
  379.     /* variable portion *****************************************
  380.     LISTofBYTE    data;         * data *
  381.     BYTE        pad(len_data)     * unused *
  382.     STRING8        doc_fmt;     * ISO compliant desc of data type *
  383.     BYTE        pad(len_fmt)     * unused *
  384.     STRING8        options;     * additional device-dependent desc *
  385.     BYTE        pad(len_options) * unused *
  386.     ************************************************************/
  387. } xPrintPutDocumentDataReq;
  388. #define sz_xPrintPutDocumentDataReq    16
  389.  
  390.  
  391. typedef struct _PrintGetDocumentData {
  392.     CARD8    reqType;        /* always PrintReqCode */
  393.     CARD8    printReqType;        /* always X_PrintGetDocumentData */
  394.     CARD16    length B16;
  395.     PCONTEXT printContext B32;    /* print context */
  396.     CARD32    maxBufferSize B32;    /* maximum buffer size requested */
  397. } xPrintGetDocumentDataReq;        
  398. #define sz_xPrintGetDocumentDataReq    12
  399.  
  400. typedef struct {
  401.     BYTE    type;            /* X_Reply */
  402.     CARD8    unused;            /* not used */
  403.     CARD16    sequenceNumber B16;
  404.     CARD32    length B32;
  405.     CARD32    statusCode B32;        /* status code for reply */
  406.     CARD32    finishedFlag B32;    /* is this the last reply */
  407.     CARD32    dataLen B32;        /* data length */
  408.     CARD32    pad1 B32;
  409.     CARD32    pad2 B32;
  410.     CARD32    pad3 B32;
  411.  
  412.     /* variable portion *****************************************
  413.     LISTofBYTE    data;         * data *
  414.     BYTE        pad(count)     * unused *
  415.     ************************************************************/
  416. } xPrintGetDocumentDataReply;
  417. #define sz_xPrintGetDocumentDataReply    32
  418.  
  419.  
  420. typedef struct _PrintStartPage {
  421.     CARD8    reqType;        /* always PrintReqCode */
  422.     CARD8    printReqType;        /* always X_PrintStartPage */
  423.     CARD16    length B16;
  424.     WINDOW    window B32;        /* window */
  425. } xPrintStartPageReq;        
  426. #define sz_xPrintStartPageReq        8
  427.  
  428. typedef struct _PrintEndPage {
  429.     CARD8    reqType;        /* always PrintReqCode */
  430.     CARD8    printReqType;        /* always X_PrintEndPage */
  431.     CARD16    length B16;
  432.     BOOL    cancel;            /* cancel boolean */
  433.     CARD8    pad1;
  434.     CARD16    pad2 B16;
  435. } xPrintEndPageReq;
  436. #define sz_xPrintEndPageReq        8
  437.  
  438.  
  439. typedef struct _PrintSelectInput {
  440.         CARD8   reqType;            /* always PrintReqCode */
  441.     CARD8   printReqType;        /* always X_PrintSelectInput */
  442.     CARD16    length B16;
  443.     PCONTEXT printContext B32;    /* print context */
  444.     BITMASK    eventMask B32;
  445. } xPrintSelectInputReq;
  446. #define sz_xPrintSelectInputReq        12
  447.  
  448.  
  449. typedef struct _PrintInputSelected {
  450.         CARD8   reqType;            /* always PrintReqCode */
  451.     CARD8   printReqType;        /* always X_PrintInputSelected */
  452.     CARD16    length B16;
  453.     PCONTEXT printContext B32;    /* print context */
  454. } xPrintInputSelectedReq;
  455. #define sz_xPrintInputSelectedReq    8
  456.  
  457. typedef struct {
  458.     BYTE    type;            /* X_Reply */
  459.     CARD8    unused;            /* not used */
  460.     CARD16    sequenceNumber B16;
  461.     CARD32    length B32;
  462.     BITMASK    eventMask B32;        /* your event mask */
  463.     BITMASK    allEventsMask B32;    /* all event mask */
  464.     CARD32    pad1 B32;
  465.     CARD32    pad2 B32;
  466.     CARD32    pad3 B32;
  467.     CARD32    pad4 B32;
  468. } xPrintInputSelectedReply;
  469. #define sz_xPrintInputSelectedReply    32
  470.  
  471. typedef struct _PrintGetAttributes {
  472.         CARD8   reqType;            /* always PrintReqCode */
  473.     CARD8   printReqType;        /* always X_PrintGetAttributes */
  474.     CARD16    length B16;
  475.     PCONTEXT printContext B32;    /* print context */
  476.         CARD8   type;            /* type */
  477.         CARD8   pad1;            /* unused */
  478.         CARD16  pad2 B16;        /* unused */
  479. } xPrintGetAttributesReq;
  480. #define sz_xPrintGetAttributesReq    12
  481.  
  482. typedef struct {
  483.     BYTE    type;            /* X_Reply */
  484.     CARD8    unused;            /* not used */
  485.     CARD16    sequenceNumber B16;
  486.     CARD32    length B32;
  487.     CARD32    stringLen B32;        /* length of xrm db string */
  488.     CARD32    pad1 B32;
  489.     CARD32    pad2 B32;
  490.     CARD32    pad3 B32;
  491.     CARD32    pad4 B32;
  492.     CARD32    pad5 B32;
  493.  
  494.         /* variable portion *****************************************
  495.     STRING8    string;                  * xrm db as a string *
  496.     BYTE    pad(stringLen)           * unused *
  497.         ************************************************************/
  498. } xPrintGetAttributesReply;
  499. #define sz_xPrintGetAttributesReply    32
  500.  
  501.  
  502. typedef struct _PrintSetAttributes {
  503.         CARD8   reqType;            /* always PrintReqCode */
  504.     CARD8   printReqType;        /* always X_PrintSetAttributes */
  505.     CARD16    length B16;
  506.     PCONTEXT printContext B32;    /* print context */
  507.     CARD32    stringLen B32;        /* length of xrm db string */
  508.         CARD8   type;                   /* type */
  509.     CARD8   rule;            /* replacement rule */
  510.     CARD16  pad1 B16;        /* unused */
  511.  
  512.         /* variable portion *****************************************
  513.     STRING8    string;                  * xrm db as a string *
  514.     BYTE    pad(stringLen)           * unused *
  515.         ************************************************************/
  516. } xPrintSetAttributesReq;
  517. #define sz_xPrintSetAttributesReq    16
  518.  
  519.  
  520. typedef struct _PrintGetOneAttribute {
  521.         CARD8   reqType;            /* always PrintReqCode */
  522.     CARD8   printReqType;        /* always X_PrintGetOneAttribute */
  523.     CARD16    length B16;
  524.     PCONTEXT printContext B32;    /* print context */
  525.     CARD32    nameLen;        /* length of name string */
  526.         CARD8   type;            /* type */
  527.         CARD8   pad1;            /* unused */
  528.         CARD16  pad2 B16;        /* unused */
  529.  
  530.         /* variable portion *****************************************
  531.     STRING8    name;             * name as a string *
  532.     BYTE    pad(name)         * unused *
  533.         ************************************************************/
  534. } xPrintGetOneAttributeReq;
  535. #define sz_xPrintGetOneAttributeReq    16
  536.  
  537. typedef struct {
  538.     BYTE    type;            /* X_Reply */
  539.     CARD8    unused;            /* not used */
  540.     CARD16    sequenceNumber B16;
  541.     CARD32    length B32;
  542.     CARD32    valueLen B32;        /* length of value string */
  543.     CARD32    pad1 B32;
  544.     CARD32    pad2 B32;
  545.     CARD32    pad3 B32;
  546.     CARD32    pad4 B32;
  547.     CARD32    pad5 B32;
  548.  
  549.         /* variable portion *****************************************
  550.     STRING8    value;             * value as a string *
  551.     BYTE    pad(value)         * unused *
  552.         ************************************************************/
  553. } xPrintGetOneAttributeReply;
  554. #define sz_xPrintGetOneAttributeReply    32
  555.  
  556.  
  557. typedef struct _PrintGetPageDimensions {
  558.     CARD8    reqType;        /* always PrintReqCode */
  559.     CARD8    printReqType;        /* always X_PrintGetPageDimensions */
  560.     CARD16    length B16;
  561.     PCONTEXT printContext B32;    /* print context */
  562. } xPrintGetPageDimensionsReq;        
  563. #define sz_xPrintGetPageDimensionsReq    8
  564.  
  565. typedef struct {
  566.     BYTE    type;            /* X_Reply */
  567.     CARD8    unused;            /* not used */
  568.     CARD16    sequenceNumber B16;
  569.     CARD32    length B32;
  570.     CARD16    width;            /* total pixel width */
  571.     CARD16    height;            /* total pixel height */
  572.     CARD16    rx;            /* reproducable x pixel offset */
  573.     CARD16    ry;            /* reproducable y pixel offset */
  574.     CARD16    rwidth;            /* reproducable x pixel width */
  575.     CARD16    rheight;        /* reproducable y pixel width */
  576.     CARD32    pad1 B32;
  577.     CARD32    pad2 B32;
  578.     CARD32    pad3 B32;
  579. } xPrintGetPageDimensionsReply;
  580. #define sz_xPrintGetPageDimensionsReply    32
  581.  
  582.  
  583. typedef struct _PrintQueryScreens {
  584.     CARD8    reqType;        /* always PrintReqCode */
  585.     CARD8    printReqType;        /* always X_PrintQueryScreens */
  586.     CARD16    length B16;
  587. } xPrintQueryScreensReq;        
  588. #define sz_xPrintQueryScreensReq    4
  589.  
  590. typedef struct {
  591.     BYTE    type;            /* X_Reply */
  592.     CARD8    unused;            /* not used */
  593.     CARD16    sequenceNumber B16;
  594.     CARD32    length B32;
  595.     CARD32    listCount;        /* number of screens following */
  596.     CARD32    pad1 B32;
  597.     CARD32    pad2 B32;
  598.     CARD32    pad3 B32;
  599.     CARD32    pad4 B32;
  600.     CARD32    pad5 B32;
  601.  
  602.         /* variable portion *****************************************
  603.     WINDOW    rootWindow;         * root window of screen *
  604.         ************************************************************/
  605. } xPrintQueryScreensReply;
  606. #define sz_xPrintQueryScreensReply    32
  607.  
  608. typedef struct _PrintSetImageResolution {
  609.     CARD8    reqType;        /* always PrintReqCode */
  610.     CARD8    printReqType;        /* always X_PrintSetImageResolution */
  611.     CARD16    length B16;
  612.     PCONTEXT printContext B32;    /* print context */
  613.     CARD16 imageRes B16;        /* image resolution */
  614.     CARD16 pad1 B16;
  615. } xPrintSetImageResolutionReq;
  616. #define sz_xPrintSetImageResolutionReq    12
  617.  
  618. typedef struct {
  619.     BYTE    type;            /* X_Reply */
  620.     BOOL    status;            /* accepted or not */
  621.     CARD16    sequenceNumber B16;
  622.     CARD32    length B32;
  623.     CARD16    prevRes B16;        /* previous resolution */
  624.     CARD16    pad1 B32;
  625.     CARD32    pad2 B32;
  626.     CARD32    pad3 B32;
  627.     CARD32    pad4 B32;
  628.     CARD32    pad5 B32;
  629.     CARD32    pad6 B32;
  630. } xPrintSetImageResolutionReply;
  631. #define sz_xPrintSetImageResolutionReply 32
  632.  
  633. typedef struct _PrintGetImageResolution {
  634.     CARD8    reqType;        /* always PrintReqCode */
  635.     CARD8    printReqType;        /* always X_PrintGetImageResolution */
  636.     CARD16    length B16;
  637.     PCONTEXT printContext B32;    /* print context */
  638. } xPrintGetImageResolutionReq;
  639. #define sz_xPrintGetImageResolutionReq    8
  640.  
  641. typedef struct {
  642.     BYTE    type;            /* X_Reply */
  643.     CARD8    unused;
  644.     CARD16    sequenceNumber B16;
  645.     CARD32    length B32;
  646.     CARD16    imageRes B16;        /* image resolution */
  647.     CARD16    pad1 B32;
  648.     CARD32    pad2 B32;
  649.     CARD32    pad3 B32;
  650.     CARD32    pad4 B32;
  651.     CARD32    pad5 B32;
  652.     CARD32    pad6 B32;
  653. } xPrintGetImageResolutionReply;
  654. #define sz_xPrintGetImageResolutionReply 32
  655.  
  656. #ifndef _XP_PRINT_SERVER_
  657. /***********************************************************************
  658.  *
  659.  * Library-only definitions.
  660.  */
  661. extern XPHinterProc  _xp_hinter_proc;
  662. extern char         *_xp_hinter_desc;
  663. extern int           _xp_hinter_init;
  664.  
  665. #else /* _XP_PRINT_SERVER_ */
  666.  
  667. /***********************************************************************
  668.  *
  669.  * Server-only definitions shared between the extension and DDX layers.
  670.  *
  671.  */
  672.  
  673. /*
  674.  * Internal return code used to indicate that the requesting
  675.  * client has been suspended.
  676.  */
  677. #define Suspended 84
  678.  
  679. struct _XpContext;
  680.  
  681. extern void XpRegisterPrinterScreen(
  682.     ScreenPtr pScreen,
  683.     int (*CreateContext)(struct _XpContext *));
  684.  
  685. typedef struct _xpprintFuncs {
  686.     int (*StartJob)(
  687.     struct _XpContext *    /* pContext */,
  688.     Bool            /* sendClientData */,
  689.     ClientPtr        /* client */);
  690.     int (*EndJob)(struct _XpContext *, int);
  691.     int (*StartDoc)(
  692.     struct _XpContext *    /* pContext */,
  693.     XPDocumentType        /* type */);
  694.     int (*EndDoc)(struct _XpContext *, int);
  695.     int (*StartPage)(
  696.     struct _XpContext *    /* pContext */,
  697.     WindowPtr        /* pWin */);
  698.     int (*EndPage)(
  699.     struct _XpContext *    /* pContext */,
  700.     WindowPtr        /* pWin */);
  701.     int (*PutDocumentData)(
  702.     struct _XpContext *    /* pContext */,
  703.         DrawablePtr        /* pDraw */,
  704.     char *            /* pData */,
  705.     int            /* len_data */,
  706.     char *            /* pDoc_fmt */,
  707.     int            /* len_fmt */,
  708.     char *            /* pOptions */,
  709.     int            /* len_options */,
  710.     ClientPtr        /* client */);
  711.     int (*GetDocumentData)(
  712.     struct _XpContext *    /* pContext */,
  713.     ClientPtr        /* client */,
  714.     int            /* maxBufferSize */);
  715.     int (*DestroyContext)(
  716.     struct _XpContext *);    /* pContext */
  717.     char *(*GetAttributes)(
  718.     struct _XpContext *,
  719.     XPAttributes         /* pool */);
  720.     char *(*GetOneAttribute)(
  721.     struct _XpContext *    /* pContext */,
  722.     XPAttributes         /* pool */,
  723.     char *            /* attrs */);
  724.     int (*SetAttributes)(
  725.     struct _XpContext *    /* pContext */,
  726.     XPAttributes         /* pool */,
  727.     char *            /* attrs */);
  728.     int (*AugmentAttributes)(
  729.     struct _XpContext *    /* pContext */,
  730.     XPAttributes         /* pool */,
  731.     char *            /* attrs */);
  732.     int (*GetMediumDimensions)(
  733.     struct _XpContext *    /* pPrintContext */,
  734.     CARD16 *        /* pWidth */,
  735.     CARD16 *        /* pHeight */);
  736.     int (*GetReproducibleArea)(
  737.     struct _XpContext *    /* pPrintContext */,
  738.     xRectangle *        /* pRect */);
  739.     int (*SetImageResolution)(
  740.     struct _XpContext *    /* pPrintContext */,
  741.     int            /* imageRes */,
  742.     Bool *            /* pStatus */);
  743. } XpDriverFuncs, *XpDriverFuncsPtr;
  744.  
  745. /*
  746.  * Each print context is represented by one of the following structs
  747.  * associated with a resource ID of type RTcontext .  A pointer to
  748.  * the context is placed in the Xp extension's devPrivates
  749.  * element in each client * which establishes a context via
  750.  * either initContext or setContext.
  751.  * The context pointer is also placed in the struct indicated by the
  752.  * RTpage resource associated with each StartPage'd window.
  753.  */
  754. typedef struct _XpContext {
  755.         XID contextID;
  756.         char *printerName;
  757.         int screenNum;          /* screen containing the printer */
  758.         struct _XpClient *clientHead; /* list of clients */
  759.         CARD32 state;
  760.         VisualID pageWin;
  761.         DevUnion *devPrivates;
  762.         XpDriverFuncs funcs;
  763.     ClientPtr clientSlept;
  764.     int imageRes;
  765. } XpContextRec, *XpContextPtr;
  766.  
  767. #include "fontstruct.h"    /* FontResolutionPtr */
  768.  
  769. extern Bool XpAllocateContextPrivate(int, unsigned);
  770. extern FontResolutionPtr XpGetClientResolutions(ClientPtr, int *);
  771. extern XpContextPtr XpContextOfClient(ClientPtr);
  772. extern XpContextPtr XpGetPrintContext(ClientPtr);
  773. extern int XpAllocateContextPrivateIndex(void);
  774. extern int XpRehashPrinterList(void);
  775. extern void XpSetFontResFunc(ClientPtr);
  776. extern void XpUnsetFontResFunc(ClientPtr);
  777. extern void XpRegisterInitFunc(ScreenPtr, char *, int (*)(struct _XpContext *));
  778.  
  779. #endif /* _XP_PRINT_SERVER_ */
  780.  
  781. _XFUNCPROTOEND
  782.  
  783. #endif /* _XpPrintstr_H_ */
  784.